Skip to content

Regenerate with widened UDT name limit - #566

Draft
leighmcculloch wants to merge 2 commits into
const-xdr-serializationfrom
regenerate-with-widened-name-limit
Draft

Regenerate with widened UDT name limit#566
leighmcculloch wants to merge 2 commits into
const-xdr-serializationfrom
regenerate-with-widened-name-limit

Conversation

@leighmcculloch

@leighmcculloch leighmcculloch commented Jul 30, 2026

Copy link
Copy Markdown
Member

Note

Part of a stack of PRs that must merge in this order.

A first group of PRs deliver const-encoded contract specs, so that contract specs are produced at compile time instead of at proc-macro execution time. This provides the foundation for the capability to construct the specs from information that is not known at proc-macro execution and only known at compile time, like the fully qualified name of a type:

  1. Add borrowed Ref variants of generated types #560
  2. Add const XDR serialization on View types #562
  3. Encode contract spec XDR at const evaluation time rs-soroban-sdk#1965

A second group of PRs deliver fully qualified type names in contract specs. Instead of a type having the name Context it will have the name soroban_sdk::auth::Context. Qualified type names make it possible to uniquely identify types in the spec, even when they have the same name. This resolves several problems with contract specs the type identify problem (stellar/rs-soroban-sdk#1570), type aliases limitations (stellar/rs-soroban-sdk#1857), and optimise spec shaking data section size (stellar/rs-soroban-sdk#1978):

  1. Widen user-defined type name limit stellar-xdr#312
  2. Regenerate with widened UDT name limit #566 ← this PR
  3. Qualify user-defined type names rs-soroban-sdk#1970
  4. Update stellar-xdr to 28.0.0 rs-stellar-rpc-client#108
  5. Patch xdr and spec crates to support long type names stellar-cli#2674

What

Advance the xdr submodule to the contract spec definition that widens the user-defined type name limit, and regenerate. The name of ScSpecTypeUdt and of the four user-defined type definition entries is now StringM<128>, and a SC_SPEC_TYPE_NAME_LIMIT const is generated.

Why

The Rust SDK is moving to a qualified name for a user-defined type, and cannot encode one under the previous limit of 60.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant